Various different video codecs may be used to compress video images. In general, video codecs make frequent use of memory resources when compressing or decompressing image data. Different video codecs, such as advanced video coding (AVC) codecs or the Society of Motion Picture and Television Engineers (SMPTE) codecs, for example, often have different and/or unique types of memory read or write requests such as bitstream, bit-plane surface, byte stream decoder (BSD) rowstore, pixel data requests, and so forth. Conventional video decoder designs may employ multiple fixed-size buffer memories to support processing of video codec read streams generated by particular type(s) of video codecs. For example, an AVC decoder design may require three separate similarly sized rowstore buffers for read stream processing, whereas, on the other hand, an SMPTE VC-1 decoder design may require one medium-sized rowstore buffer, one large differential motion vector (DMV) buffer, and one small bit-plane buffer.
Conventional video decoder designs typically employ large internal caches and/or separate predefined fixed size buffers per read stream. However, such approaches can be very area expensive and/or subject to high power consumption. In addition, most conventional video hardware acceleration decoder designs do not have sufficient area to include a large internal cache to store temporary data. Hence, most designs use pre-fetching logic and multiple small buffers to hide long memory latency of read requests from external memory.